Telegram Group & Telegram Channel
Как устроен HashMap под капотом?

HashMap основан на массиве бакетов (Node<K, V>[] table), где каждый бакет содержит связанный список или дерево.

🔹 Ключевые моменты

— Для хеширование ключа вызывается hashCode(), после чего вычисляется индекс массива через (n - 1) & hash, где n – размер массива.
— Если несколько ключей попадают в один бакет, создаётся связанный список. Если число элементов в бакете превысит 8, список заменяется на красно-чёрное дерево для ускорения поиска.
— Если загрузка (size / capacity) превышает 0.75, размер массива увеличивается в 2 раза, а элементы перераспределяются.
— Поиск идёт по бакету: если элементов несколько, перебирается список (или дерево), сравниваются hashCode() и equals().
— HashMap обеспечивает O(1) для операций get() / put(), но при частых коллизиях или неправильных hashCode() может деградировать до O(log n).
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/java_interview_lib/779
Create:
Last Update:

Как устроен HashMap под капотом?

HashMap основан на массиве бакетов (Node<K, V>[] table), где каждый бакет содержит связанный список или дерево.

🔹 Ключевые моменты

— Для хеширование ключа вызывается hashCode(), после чего вычисляется индекс массива через (n - 1) & hash, где n – размер массива.
— Если несколько ключей попадают в один бакет, создаётся связанный список. Если число элементов в бакете превысит 8, список заменяется на красно-чёрное дерево для ускорения поиска.
— Если загрузка (size / capacity) превышает 0.75, размер массива увеличивается в 2 раза, а элементы перераспределяются.
— Поиск идёт по бакету: если элементов несколько, перебирается список (или дерево), сравниваются hashCode() и equals().
— HashMap обеспечивает O(1) для операций get() / put(), но при частых коллизиях или неправильных hashCode() может деградировать до O(log n).

BY Библиотека собеса по Java | вопросы с собеседований


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/java_interview_lib/779

View MORE
Open in Telegram


Библиотека собеса по Java | вопросы с собеседований Telegram | DID YOU KNOW?

Date: |

The S&P 500 slumped 1.8% on Monday and Tuesday, thanks to China Evergrande, the Chinese property company that looks like it is ready to default on its more-than $300 billion in debt. Cries of the next Lehman Brothers—or maybe the next Silverado?—echoed through the canyons of Wall Street as investors prepared for the worst.

Библиотека собеса по Java | вопросы с собеседований from nl


Telegram Библиотека собеса по Java | вопросы с собеседований
FROM USA